INTRODUCTION 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Congratulations in your interest in the Sorting Tutor! You have chosen a high quality tutor that will provide you with the best opportunity to understand the concepts behind computerized sorting. This manual is a reference to the Sorting Tutor. The Sorting Tutor offers a complete learning guide to six common sorting algorithms. We trust you will find this guide an informative aid that will allow you to successfully build sorting algorithms necessary in the construction of various computer programs. Who Should Read This Manual This manual is intended for novice to advanced programmers. For the novice, Chapter 1 provides basic information for starting and using the Sorting Tutor. Chapters 3 & 6 introduce the novice programmer to three basic sorting algorithms. For the advanced programmer, Chapters 3 through 8 explain each of the nine sorting algorithms in full detail. The advanced programmer may simply go to the sorting algorithm that is of most interest. For all users, chapters 2 through 8 provide examples for exchange and insertion sorts. What You Should Already Know In order to get the most out of this manual, you should be familiar with some fundamental programming aspects. You should know how to code LOOPs, IF-THEN-ELSEs, ARRAYS (one dimensional), and ASSIGNMENT statements. You should also be familiar with QuickBASIC's primary commands since the program examples utilized in the Sorting Tutor are in QuickBASIC. This does not mean that you have to know every QuickBASIC command, but you should be comfortable in relating the commands used in the Sorting Tutor with the language that you are most familiar with. How to Use This Manual This manual is not meant to be read from cover to cover. It is a reference manual, so use it to look up specific problems that you want to solve. To get the most out of this manual, refer to the glossary whenever you are not entirely clear about any computer terms used. INTRODUCTION INTRODUCTION What This Manual is About For ease of reference, this manual is organized (except for Getting Started, chapter 1) according to the options on the main menu screen. Each sorting algorithm displayed on the main menu can be classified into the following two types: Exchange sorts: (BUBBLE, SHAKER, and QUICK sort) Exchange sorts utilize exchanges as an indirect method of selection, and speed up towards the end. Insertion sorts: (LINEAR INSERTION, BINARY INSERTION, and SHELL sort) Insertion sorts take each successive piece of data and place it into the correct position relative to all previously considered items. The manual consists largely of information on six sorting algorithms; BUBBLE, SHAKER, QUICK, LINEAR INSERTION, BINARY INSERTION, and SHELL sort. The code that is used for each sorting algorithm is just one way to code an application; it is not the only way. The reference section in this manual provides additional information on these sorting algorithms. GETTING STARTED 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 The program disk that you have received with this package is ready to run. You may start this program by simply placing it into drive A: and enter: SORTING. The introduction screen is displayed on your screen after you have pressed the enter key. To continue to the main menu screen, press any key on the keyboard. The main menu that appears on the screen after the introduction can be visualized as the table of contents for your system. It is a menu containing all major features in the system. The main menu displays six sorting algorithms that are grouped into two types (Insertion and Exchange). Receiving HELP by Pressing F1 Use the Sorting Tutor's Help key (F1) to answer any questions that you may have. The Help key is context-sensitive, which means the Sorting Tutor will offer help to current situations. For example, if you are currently at the main menu and press the F1 key, the system will offer help that is related to the main menu screen. Selecting a Menu Option The Sorting Tutor offers you an an attractive and user friendly menu environment. You may use the following keys when selecting an option from any menu screen that the Sorting Tutor displays: UP ARROW Allows you to highlight the previous item on the menu. DOWN ARROW Highlights the next item in the menu. FIRST LETTER When you press the first highlighted menu letter, the computer will automatically choose this option. ** Please Note: Additional help is available by highlighting the desired letter option (use the arrow keys) and reading the message located at the bottom of the screen. System Requirements There are certain hardware and software requirements to run the Sorting Tutor. The following requirements are needed before the Sorting Tutor can function: MINIMUM INTERNAL MEMORY: 640K RAM MINIMUM DISK CONFIGURATION: One diskette drive (5¬" or 3«" Drive) OPERATING SYSTEM: PC-DOS, Ver. 2.0 or higher MS-DOS, Ver. 2.0 or higher COMPUTERS: IBM PC, PC-XT, PC-AT, PS/2, or 100% compatible GRAPHICS CARD: Required to display graphs or receive context sensitive HELP. GETTING STARTED Installing The Program to a Hard Drive (optional) Although this program can run on a floppy disk, this program can also be installed on a hard drive with .360MEG of available disk space. As you will see, installing this program on a hard drive is very easy. The following steps will install the original program from drive A to drive C: 1. Place the program disk in drive A. 2. Type: A: and then press Enter. 3. Type: INSTALL and then press Enter. Once you have completed these three steps, the computer will copy all the necessary files on drive A to a sub-directory in drive C (called SORTING). This should take approximately 1.5 minutes. After all drive activity has stopped, you may remove the original diskette and store it in a safe place. GENERAL SORTING INFORMATION This section covers the first option on the main menu screen and explains the importance of sorting data elements on a computer. If you are unfamiliar with the concepts behind sorting, please take the time to read this section on the main menu. You should also use the glossary in the back of this manual whenever a term is unclear to you. Since this is a information section, the F1 key will not provide help in this section. BUBBLE SORT 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 By selecting this option from the main menu screen, you can choose any option that is displayed on the submenu screen. A SUB-MENU will illustrate the options that are available to you. This section describes these options. The bubble sort is one of the easiest sorting routines to learn. Background Information The background information on the bubble sort offers novice programmers a description of the algorithm and code that is used in this simulation. The word 'BUBBLE' refers to the way in which a data item works its way up the list until it is in ascending or descending order. This technique is the easiest way for novice programmers to learn computerized sorting. In practice, when data is very close to being sorted, a bubble sorting routine with a simple flag is an easy solution. Although the bubble sort is a routine designed to sort any number of elements in an array, sorting large amounts of data would dramatically increase sorting time. The bubble sort technique requires approx. « * Nư operations (N is the total number of elements in the array). Graphical Sorting This process graphically demonstrates the bubble sorting technique. You will be required to enter the number of elements to sort. This number can be as large as 3000 or as small as 2, the Sorting Tutor requires more time to complete a sort of larger numbers. This process illustrates the characteristics of the bubble sort. The X-axis (bottom horizontal line) represents the array positions, and the Y-axis (left vertical line) is the number assigned to that position. White dots (black in Fig. 3-2) represent unsorted data and red dots represent sorted data. A red diagonal line will form (ie., array(1) = 1, array(2) = 2 ... array(n) = n) as the data is sorted. After you enter the number of data items to sort, the Sorting Tutor will generate and sort this random set of unique integers (no number will occur twice). To provide an overview of this sorting process, the demonstration is completely automatic. You may press the pause key (CTRL-S) to freeze the current screen display. Press any key when you are ready to resume this demo. By pressing the ESC key, the Sorting Tutor will return you to the submenu screen displayed in figure 3-1. Once you have completed the demo, the Sorting Tutor will also display the time it took to complete the bubble sorting process. As you can observe from this process, bubble sorting is a very slow and time consuming process. The shaker sort algorithm offers an improvement over the bubble sorting technique (refer to chapter 4). ** Please Note: Due to physical mapping of dots on the screen, the Sorting Tutor may misrepresent (ie., erase 2 dots instead of one) numbers greater than 190. You may enter numbers greater than 190, but keep in mind that all of the dots may not be visible. BUBBLE SORT Program Code Sorting This process will use a QuickBASIC algorithm to demonstrate the bubble sort. Before the process can start, you must answer these two questions: QUESTION 1: Enter the number of seconds to pause between sorting steps: ( 0 will wait for the user to press any key. ): [ ] ANSWER: Use a number of seconds between each step of the sorting algorithm. This number can be any number between 0 and 99999. Enter a '0' to control each step. 10 to 20 seconds is normal for beginners. QUESTION 2: Do you want to enter the sample data (2 to 11 items)? (Y\N): ANSWER: Enter 'Y' for YES and 'N' for NO. If you want to type in your own words, enter 'Y'. A 'N' response will instruct the Sorting Tutor to choose 11 words at random from its data base. Once you have responded to the two questions above, the Sorting Tutor will sort the array. If you find that the process is going too fast, you may press the PAUSE key (or CTRL-S) to freeze the screen display. Press any key when you are ready to resume the process. If you understand the bubble sorting concept or simply want to return to the submenu, press the ESC key to permit the Sorting Tutor to operate at its fastest speed. ** Please Note: Pressing F1 on any line of code in this sorting algorithm will offer you a description of the program code that is displayed on the screen. Return to MAIN MENU By pressing the 'R' key at the submenu screen (you may also highlight this option), the Sorting Tutor will display the main menu screen. SHAKER SORT 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 By selecting this option from the main menu screen, you can choose any option that is displayed on the submenu screen. This submenu will illustrate the options that are available to you. This section describes these options. Background Information The background information on the shaker sort offers novice to advanced programmers a description of the algorithm and code that is used in this simulation. Like the BUBBLE sort, the word 'SHAKER' refers to the way in which a data item works its way up and down the list until it is in ascending or descending order. This technique is compared to a cocktail SHAKER for its process of sorting data. The shaker sort is also designed just like the BUBBLE sort except this algorithm utilizes a boolean (TRUE\FALSE) flag to indicate whether the elements being compared are already in order. If they are in their proper place, then these elements are considered to be sorted. The improvements to the shaker sort may seem good, but it really makes little difference when sorting a large number elements (the number of exchanges is identical to those of the bubble sort). Graphical Sorting This process graphically demonstrates the shaker sort technique. You will be required to enter the number of elements to sort. This number can be as large as 3000 or as small as 2, but the Sorting Tutor requires more time to complete a sort of larger numbers. The graph illustrates the characteristics of the shaker sort. The X-axis (bottom horizontal line) represents the array positions, and the Y-axis (left vertical line) is the number assigned to that position. White dots represent unsorted data and red dots represent sorted data. A red diagonal line will form (ie., array(1) = 1, array(2) = 2 ... array(n) = n) as the data is sorted. After you enter the number of data items to sort, the Sorting Tutor will generate and sort this random set of unique integers (no number will occur twice). To provide an overview of this sorting process, the demonstration is completely automatic. You may press the pause key (CTRL-S) to freeze the current screen display. Press any key when you are ready to resume this demo. By pressing the ESC key, the Sorting Tutor will return you to the submenu screen displayed in figure 4-1. Once you have completed the demo, the Sorting Tutor will also display the time it took to complete the shaker sorting process. As you can observe from comparing the shaker and bubble sorting graphs, the shaker sort works from both sides of the graph. Although this algorithm may seem better, the time to sort larger numbers is about the same. ** Please Note: Due to physical mapping of dots on the screen, the Sorting Tutor may misrepresent (ie., erase 2 dots instead of one) numbers greater than 190. You may enter numbers greater than 190, but keep in mind that all of the dots may not be visible. SHAKER SORT Program Code Sorting ( See Program Code Sorting for Bubble Sorting ) Return to MAIN MENU By pressing the 'R' key at the submenu screen (you may also highlight this option), the Sorting Tutor will display the main menu screen. QUICKSORT 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 By selecting this option from the main menu screen, you can choose any option that is displayed on the submenu screen. The submenu will illustrate the options that are available to you. This section describes these options. Background Information The background information on the quick sort offers you a description of the algorithm and code that is used in this simulation. The quick sort is well suited for advanced programmers. Although it may seem that the quick sort is the fastest algorithm, it is not always as quick as expected. The goal in the quick sort is to select a pivot which is well positioned relative to the data. A poor use of the quick sort would be to sort data that is already completely sorted. Graphical Sorting This process graphically demonstrates the quick sort technique. You will be required to enter the number of elements to sort. This number can be as large as 3000 or as small as 2, but the Sorting Tutor requires more time to complete a sort of larger numbers. The graph displayed in figure 5-2 illustrates the characteristics of the quick sort. The X-axis (bottom horizontal line) represents the array positions, and the Y-axis (left vertical line) is the number assigned to that position. White dots represent unsorted data and red dots represent sorted data. A red diagonal line will form (ie., array(1) = 1, array(2) = 2 ... array(n) = n) as the data is sorted. After you enter the number of data items to sort, the Sorting Tutor will generate and sort this random set of unique integers (no number will occur twice). To provide an overview of this sorting process, the demonstration is completely automatic. You may press the pause key (CTRL-S) to freeze the current screen display. Press any key when you are ready to resume this demo. By pressing the ESC key, the Sorting Tutor will return you to the submenu screen. Once you have completed the demo, the Sorting Tutor will also display the time it took to complete the shaker sorting process. As you can observe from this process, the quick sort is very fast in its sorting procedure (3000 elements take approx. 29 seconds on a 386 33MHZ computer). You can also see how quickly the partitions (square blocks) are formed and sorted from this process. ** Please Note: Due to physical mapping of dots on the screen, the Sorting Tutor may misrepresent (ie., erase 2 dots instead of one) numbers greater than 190. You may enter numbers greater than 190, but keep in mind that all of the dots may not be visible. Program Code Sorting This process will use a QuickBASIC algorithm to demonstrate the quick sort. Before the process can start, you must answer these two questions: **** SEE PROGRAM SORTING under the bubble sort for more help. Return to MAIN MENU By pressing the 'R' key at the submenu screen (you may also highlight this option), the Sorting Tutor will display the main menu screen. LINEAR INSERTION SORT 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 By selecting this option from the main menu screen, you can choose any option that is displayed on the submenu screen. The submenu will illustrate the options that are available to you. This section describes these options. The Linear insertion sort is one of the basic examples of INSERTION SORTS. Background Information The background information on the linear insertion sort offers novice and advanced programmers a description of the algorithm and code that is used in this simulation. The linear insertion process is similar to the process of picking up cards one by one in a bridge game. When you choose a new card, you insert it into its correct position (RELATIVE TO THE OTHER CARDS IN YOUR HAND). Graphical Sorting This process graphically demonstrates the linear insertion sort technique. You will be required to enter the number of elements to sort. This number can be as large as 3000 or as small as 2, but the Sorting Tutor requires more time to complete a sort of larger numbers. The graph illustrates the characteristics of the linear insertion sort. The X-axis (bottom horizontal line) represents the array positions, and the Y-axis (left vertical line) is the number assigned to that position. White dots (black in Fig. 6-2) represent unsorted data and red dots represent sorted data. A red diagonal line will form (ie., array(1) = 1, array(2) = 2 ... array(n) = n) as the data is sorted. After you enter the number of data items to sort, the Sorting Tutor will generate and sort this random set of unique integers (no number will occur twice). To provide an overview of this sorting process, the demonstration is completely automatic. You may press the pause key (CTRL-S) to freeze the current screen display. Press any key when you are ready to resume this demo. By pressing the ESC key, the Sorting Tutor will return you to the submenu screen. Once you have completed the demo, the Sorting Tutor will also display the time it took to finish the linear insertion sorting process. As you can observe from this process, the linear insertion sort inserts all unsorted data into a sorted "diagonal like" line. Although this is the same process that is used in binary insertion sort, linear insertion sort take a longer amount of time to insert unsorted elements. ** Please Note: Due to physical mapping of dots on the screen, the Sorting Tutor may misrepresent (ie., erase 2 dots instead of one) numbers greater than 190. You may enter numbers greater than 190, but keep in mind that all of the dots may not be visible. LINEAR INSERTION SORT Program Code Sorting This process will use a QuickBASIC algorithm to demonstrate the linear insertion sort. Before the process can start, you must answer these two questions (SEE program sorting for BUBBLE SORT). Return to MAIN MENU By pressing the 'R' key at the submenu screen (you may also highlight this option), the Sorting Tutor will display the main menu screen. BINARY INSERTION SORT 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 By selecting this option from the main menu screen, you can choose any option that is displayed on the submenu screen. The submenu illustrates the options that are available to you. This section describes these options. Background Information The background information on the binary insertion sort offers novice and advanced programmers a description of the algorithm and code that is used in this simulation. The binary insertion sort works by dividing sorted elements into equal halves. The next step is to compare the two halves and determine in which half the new data element should be placed. This process is repeated until the new element can be inserted into the array. Although the above practice may seem to involve many steps, the binary insertion sort requires an amazingly small number of "guesses" to find its position. For example, this process could easily guess your name within 20 tries. If your name is in a phone directory, locate the person that is in the center of the book (approx.). Now, decide whether this name is before or after your name. Since you are searching in smaller and smaller halves, the dividing property of the binary insertion process will find your name within 20 guesses (unless the directory has more than 219 = 1,048,576 entries). Graphical Sorting This process graphically demonstrates the binary insertion sort technique. You will be required to enter the number of elements to sort. This number can be as large as 3000 or as small as 2, but the Sorting Tutor will require more time to complete a sort of larger numbers. The graph displayed in figure 7-2 illustrates the characteristics of the binary insertion sort. The X-axis (bottom horizontal line) represents the array positions, and the Y-axis (left vertical line) is the number assigned to that position. White dots (black in Fig. 7-2) represent unsorted data and red dots represent sorted data. A red diagonal line will form (ie., array(1) = 1, array(2) = 2 ... array(n) = n) as the data is sorted. After you enter the number of data items to sort, the Sorting Tutor will generate and sort this random set of unique integers (no number will occur twice). To provide an overview of this sorting process, the demonstration is completely automatic. You may press the pause key (CTRL-S) to freeze the current screen display. Press any key when you are ready to resume this demo. By pressing the ESC key, the Sorting Tutor will return you to the submenu screen. Once you have completed the demo, the Sorting Tutor will also display the time it took to finish the binary insertion sorting process. As you can observe from this process, the binary insertion sort inserts all unsorted data into a sorted "diagonal like" line. Although this is the same process that is used in linear insertion sort, the binary insertion sort can quickly find a position to insert unsorted elements. ** Please Note: Due to physical mapping of dots on the screen, the Sorting Tutor may misrepresent (ie., erase 2 dots instead of one) numbers greater than 190. You may enter numbers greater than 190, but keep in mind that all of the dots may not be visible. BINARY INSERTION SORT Program Code Sorting This process will use a QuickBASIC algorithm to demonstrate the binary insertion sort. Before the process can start, you must answer two questions: (SEE PROGRAM CODE SORTING UNDER bubble sort) Return to MAIN MENU By pressing the 'R' key at the submenu screen (you may also highlight this option), the Sorting Tutor will display the main menu screen. SHELL SORT 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 y selecting this option from the main menu screen, you can choose any option that is displayed on the submenu screen. The submenu will illustrate the options that are available to you. This section describes these options. Although advanced programmers can study the quick sorting time, the Shell sort is also well suited for novice programmers. Background Information The background information on the Shell sort offers novice programmers a description of the algorithm and code that is used in this simulation. The Shell sort (named after Donald L. Shell) is a variation of the insertion sort. When sorting large arrays, this sorting algorithm is much faster than the BUBBLE sort. The Shell sort compares items that are a given number of elements away (usually INT(n/2)) and it will eventually compare items that are close together. If these items are out of their proper order, a swap is performed. The Shell sort yields faster results than would be expected by examining its algorithm. Graphical Sorting This process graphically demonstrates the Shell sort technique. You will be required to enter the number of elements to sort. This number can be as large as 3000 or as small as 2, but the Sorting Tutor will require more time to complete a sort of larger numbers. The graph displayed in figure 8-2 illustrates the characteristics of the Shell sort. The X-axis (bottom horizontal line) represents the array positions, and the Y-axis (left vertical line) is the number assigned to that position. White dots (black in Fig. 8-2) represent unsorted data and red dots represent sorted data. A red diagonal line will form (ie., array(1) = 1, array(2) = 2 ... array(n) = n) as the data is sorted. After you enter the number of data items to sort, the Sorting Tutor will generate and sort this random set of unique integers (no number will occur twice). To provide an overview of this sorting process, the demonstration is completely automatic. You may press the pause key (CTRL-S) to freeze the current screen display. Press any key when you are ready to resume this demo. By pressing the ESC key, the Sorting Tutor will return you to the submenu screen. Once you have completed the demo, the Sorting Tutor will also display the time it took to complete the Shell sorting process. As you can observe from this process, the Shell sort quickly brings data items closer to the sorted diagonal line. Although this is not as fast as the recursive quick sort, the memory required to operate the Shell sort is much lower (recursive algorithms require more memory for each recursive call). ** Please Note: Due to physical mapping of dots on the screen, the Sorting Tutor may misrepresent (ie., erase 2 dots instead of one) numbers greater than 190. You may enter numbers greater than 190, but keep in mind that all of the dots may not be visible. SHELL SORT Program Code Sorting This process will use a QuickBASIC algorithm to demonstrate the Shell sort. Before the process can start, you must answer these two questions: (SEE program sorting for the bubble sort) Return to MAIN MENU By pressing the 'R' key at the submenu screen (you may also highlight this option), the Sorting Tutor will display the main menu screen. CHANGE COLOR ON\OFF 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 If you are using a monochrome monitor that does not display colors, you may use this option to turn the colors off. When you select this option again, the colors will be enabled. ** Please Note: If you do not have a color adapter card for your computer, changing the color will NOT enable you to display graphs. Refer to your operations manual that came with your computer to verify if your computer can display graphics. GLOSSARY [A] - [D] ALGORITHM An algorithm is a sequence of instructions that tell how to solve a particular problem. An algorithm must be specified exactly, so there can be no doubt about what to do next, and it must have a finite number of steps. A computer program is an algorithm. ARRAY An array is a collection of data that is referred to by one name. ARROW KEYS The cursor keys are located on the right hand side of the keyboard. They are labeled with both numbers and arrows. These keys can be used to highlight a menu option. The light on the Num. Lock key must be off in order to allow these keys to move the cursor. BYTE A byte is the amount of memory space needed to store one character, which is normally 8 bits. A computer with 8-bit bytes can distinguish 256 different characters. COMPATIBLE Two computers are said to be compatible if they can use the same programs. COMPILER A compiler is a computer program that translates a high level language into machine language. COPY To copy information is to transfer the information to another location, leaving the original information unchanged. CURSOR The cursor is the symbol on a computer terminal that shows you where the next character you type will appear on the screen. DATA Data is factual information. Data is the plural of the word datum, which means "a singlefact." DATA BASE A data base is a collection of data stored on a computer storage medium, such as a disk, that can be used for more than one purpose. DATA BASE MANAGEMENT Data base management is the task of storing data in a data base and retrieving information from that data. DISK DRIVE A disk drive is a device that enables a computer to read and write data on disks. DOS DOS (Disk Operating System) has been used by many computer manufacturers as a name for various operating systems. GLOSSARY [E] - [Q] ENTER KEY The enter key on a computer terminal is the key you press at the end of each line in order to enter the contents of that line into the computer. F1 This is a function key which is located on the left side of the keyboard (or along the top). Function keys are referred to as F1, F2, F3, ... F12. When an instruction lists a number preceded by an F, the function keys are used. FILE A file is a collection of information stored as records. FLOPPY DISK A floppy disk is a computer storage medium made of plastic which is covered with a magnetic coating. HARD COPY A hard copy is a printout on paper of computer output. HARD DISK A hard disk is a storage medium using rigid aluminum disks coated with iron oxide. HARDWARE The hardware in a computer system consists of all the physical elements in the computer such as integrated circuits, wires, and terminals. INPUT The input to a computer is the data is that are fed into the computer for it to process. MACHINE LANGUAGE A machine language contains instructions that a computer can execute directly. MAIN MENU The main menu is the table of contents for your system. It is a menu containing all major features in the system. MEG MEG stands for megabyte which refers to a memory size of 1,048,576 bytes. MS-DOS MS-DOS, the MicroSoft Disk Operating System, is an operating system for computers that use the 8086 or 8088 microprocessor. OUTPUT The output of a computer is the information that the computer generates as a result of its calculations. QuickBASIC QuickBASIC is one of the easiest computer languages to learn. B.A.S.I.C. stands for Beginners All-purpose Symbolic Instructional Code and was originally developed by John Kemeny and Thomas Kurtz. GLOSSARY [R] - [S] RECURSION The use of a program that calls itself while it is being executed. RUN Used to describe the execution process of a program. In general, most programs are executed at the DOS prompt by typing in the name of the program and pressing the ENTER key. SCREEN The information displayed on your monitor. SORT To sort a group of items, such as the elements in an array or the records of a file, is to arrange them in numerical or alphabetical order. REFERENCES The follow references may offer you additional help on the sorting process: Box, Richard and Stephen Lacey, April, 1991. "A Fast, Easy Sort", BYTE, V16., pp. 315-320. Knuth, Donald E., The Art of Computer Programming, Vol. 3: Sorting and Searching, Addison-Wesley, 1973, pp. 73- 180. Lorin, Harold, Sorting and Sort Systems, Addison-Wesley, 1975, pp. 1-173. Wirth, Nicklaus, Algorithms + Data Structures = Programs, Prentice-Hall, 1976, pp. 56-87.